﻿#define _CRT_SECURE_NO_WARNINGS
#include"tree.h"
#include"Stack.h"
//非递归算法
// 中序和先序遍历的结构相同，只是访问语句写的位置不一样
// 后序遍历最复杂，单独讨论

//实现一个结构：
//									 A
//								    / \
//								   B   C
//								  / \   
//							     D   E  
// 
// 

int main()
{
	BTNode* A = NodeInit('A');
	BTNode* B = NodeInit('B');
	BTNode* C = NodeInit('C');
	BTNode* D = NodeInit('D');
	BTNode* E = NodeInit('E');

	A->pLeft = B;
	A->pRight = C;
	B->pLeft = D;
	B->pRight = E;

	//先序遍历
	//非递归算法
	PrevOrder(A);
	//预期结果：A B D NULL NULL E NULL NULL C NULL
	printf("\n");

	//中序遍历
	//非递归算法
	InOrder(A);
	//预期结果：NULL D NULL B NULL E NULL A NULL C 
	printf("\n");

	//后序遍历
	//非递归算法
	PostOrder(A);
	//预期结果：D E B C A

	return 0;
}